namespace UniversalAdminSystem.Domian.PermissionManagement.ValueObjects;

public enum PermissionAction
{
    // 基础操作
    Read,       // 读取资源
    Create,     // 创建资源
    Update,     // 更新资源
    Delete,     // 删除资源

    // 管理操作
    Manage,     // 完全管理
    Approve,    // 审批操作
    Audit,      // 审计访问

    // 特殊操作
    Execute,    // 执行操作
    Import,     // 导入数据
    Export,     // 导出数据
    Restore,    // 恢复数据
    Archive,     // 归档数据

    // 可访问文档权限等级
    Public,     //公开
    Restricted, //受限
    Private     //私有
    
}

/// <summary>
/// 扩展方法静态类
/// </summary>
public static class PermissionActionExtensions
{
    /// <summary>
    /// 获取操作类型的分类
    /// </summary>
    /// <param name="action"></param>
    /// <returns></returns>
    public static string GetCategory(this PermissionAction action)
    {
        return action switch
        {
            PermissionAction.Read or 
            PermissionAction.Create or 
            PermissionAction.Update or 
            PermissionAction.Delete
                => "Basic",
                
            PermissionAction.Manage or 
            PermissionAction.Approve or 
            PermissionAction.Audit
                => "Management",
                
            _
                => "Special"
        };
    }
    
    /// <summary>
    /// 检查操作是否允许批量执行
    /// </summary>
    /// <param name="action"></param>
    /// <returns></returns>
    public static bool AllowBulk(this PermissionAction action)
    {
        return action != PermissionAction.Manage &&
               action != PermissionAction.Audit;
    }
}